home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld 1998 October
/
Macworld (1998-10).dmg
/
Shareware World
/
Info
/
For Developers
/
MSL_2.4.10
/
-> Metrowerks Standard Library
/
-> MSL Release Notes
/
MSL 2.4.10 Release Notes
Wrap
Text File
|
1998-08-07
|
31KB
|
921 lines
========================================================================
Metrowerks MSL 2.4.10 Pro3 Patch 2 Release Notes
========================================================================
Version: Metrowerks CodeWarrior 2.4.10, Pro3 Patch 2
Date: August 7, 1998
Authors: Vicki Scott, Michael Marcotty, Matt Fassiotto, Ron Liechty,
Howard Hinnant
========================================================================
========================================================================
New Features in This Version
========================================================================
* __MSL__ identifier is 0x240a. This release is known as the Pro3 Patch.
* __MSL_FIX_ITERATORS__ has been removed! The compiler now fixes
partial template specializations (be sure and read the compiler
release notes for restrictions, however). This means you no longer
need this hack in your code anymore. See notes below for how to
remove this from your code - there is a trick that you have to be
aware of.
* <locale> has been completely rewritten to improve speed and size
of compilation. See notes below for variances from the Standard.
* slist and hash have been fixed
* auto_ptr is implemented to the Nov 97 Standard now
* <bitset> now uses only one bit per bool instead of one byte
* <algorithm> has been rewritten to fix quite a few bugs and some
gain in performance and correctness of functions
* mem_fun classes now implemented
========================================================================
MSL 2.4.10 Reported Bugs From MSL 2.4.9 (MPTP Release) Fixed
========================================================================
* Fixed a problem with a misplaced increment on pointer operator in
strstr (string.c) (PPC only)
* Update __MSL__ identifier to 0x240a (MSL 2.4.10)
========================================================================
MSL 2.4.9 Reported Bugs From MSL 2.4.6 (MPTP Release) Fixed
========================================================================
* Fix a problem with pre-increment of pointer for PPC strstr function
(string.c)
* Updated __MSL__ identifier to 0x2409 (MSL 2.4.9)
* Fixed the problem with multiple includes of <cassert> or assert.h
* Fixed the problem with OLDROUTINENAMES define
* Fixed the problem with std:: in size_t and offsetof macros
* Fixed problem with POSIX definition of fdopen
* Fixed open flags for win32 files to not truncate files when opening
* Fixed project files for x86 to include the relative path names
* Added the "sys" directory and moved stat.h to it so that x86 files
who look for <sys\stat.h> can now find it
* Moved stroul syntax and stroud syntax files to a new folder called
"MSL Technical Notes" and restored their contents (missing since
Pro 1)
* Fixed SIOUX project files on Mac to not include the prefix file
========================================================================
Reported Bugs Fixed in This Version
========================================================================
* MW00042 (Mac)
The definition of O_RDWR in the ANSI header fcntl.h is now defined as
0x01, instead of 0x0.
* MW00225 (Mac)
Fixes the inadvertant release of a shared resource prior to when it
should be released.
* MW00288 (x86)
Fixes a problem with exit code on Windows' platforms.
* MW00294 (Mac)
Fixes a problem following aliases
* MW00427
Fixes specializations in valarray
* MW00445 (Mac, x86 still needs to be fixed)
Fixes a problem with trying to seek past EOF
* MW00456 (Mac)
Fixes a problem with renaming directories
* MW01597 (x86)
Fixes a problem with renaming "open" to "_open"
* MW01813 (Mac/PPC)
Fixes a one-off bug in strstr when null is part of the pattern
* MW02103
MW06325
The speed and size requirements (too slow, too big) have been fixed
in <locale> in the C++ library. It no longer takes >64K memory nor
half and hour to compile locimp.cpp
* MW02520
Fixes string I/O alignment in C++
* MW02557
removed the Win32 SDK header x86_prefix.h from MSL. We now
use the one provided with the SDK.
* MW02625
Fixes a problem with memchr and __memrchr for characters > 0x80
* MW02733
Fixes a problem with state bit when fflush is called
* MW02910
Fixes character output alignment in C++
* MW03236
Fixes the search algorithm in <algorithm> to be more efficient
* MW03272
Fixes a bug in fread when a file contains fewer bytes than
requested
* MW03278 (mac)
Fixes a cosmetic bug in SIOUX
* MW03295 (mac)
Fixes a bug in FSp_fopen with _fcreator and _ftype
* MW05946
Fixes a bug in getting memory for a error warning during
an exception
* MW06295
Fixes bug when trying to print a long long cast to an int
* MW06496
Fixes a bug with strftime incorrectly returning zero
* MW06626
Fixes a bug in setw when temporary string is destructed
leaving a dangling pointer
* MW07009 (x86)
Fixes a bug in WinSIOUX when passing arguments to main
* MW07031
Fixes a bug in SIOUX WASTE with data type too small for
possible values
* unix headers stat.h/fcntl.h/unistd.h were not including the
correct version header file because __dest_os was not defined.
==============================================================
Math bugs fixed in this release
==============================================================
* MW01251
fabs crashes under CFM-68K
* MW01298
__float_min etc. have been removed from float.c. Standard
constants such as FLT_MI,FLT_MAX are now translated by the
compiler at compile time.
* MW02445
precision of printing doubles was incorrect even when values
are exact(eg. ints). the module ansi_fpx86.obj replaces
ansi_fp_x86.c on INTEL.
* MW07091
could not reproduce this, but the implementation of complex
log10 was inefficient. We now multiply by a constant instead
of a function call/divide. this should be fixed.
* fmin/fmax/fdim
now are strictly compliant with C9X
* complex abs/sqrt
were not working for large values or values near 0.
using hypot instead of sqrt(x*x + y*y) instead.
==============================================================
The following user reported bugs were fixed in Pro3, but were
not mentioned in the Pro3 Release Notes:
==============================================================
* MW00102
SIOUXSetTitle
* MW00222
gratuitous warning messages
* MW00319
memory leaks in streams
* MW00376
exception safe uninitialized_fill
* MW00427
brain dead valarray
* MW00451
string exposed refcounted implementation
* MW00593
mutable bug in auto_ptr
* MW00622
sputbackc
* MW00767
string::operator[] fixed
* MW00805
exception saftey of entire lib, esp. vector::op=
* MW00827
explicit facet constructor
* MW01254
problem with vector.h --> insert
* MW01279
what() in exception is redeclared
* MW01300
mode_t defined twice
* MW01321
fseek and DOS line endings
* MW02075
problem with first arg to multimap being const
* MW02345
better <limits>
* MW02522
destructor problems for const objects in vector
* MW02531
string::find
* MW02709
brain dead valarray
* MW02729
headers don't pass check syntax
* MW02783
isnan macro bug
* MW02789
more valarray problems fixed
* MW02848
bug in hash_table::iterator::operator =()
* MW02948
abs added to cmath
* MW02949
missing size() in valarray
* MW02964
missing wchar functions
* MW03156
poor bad_alloc design
* MW03455
missing operator-> on iterators
* MW05605
incorrect complex::atan2
* MW05846
printing \r
* MW05968
problem in map.h trying to access deallocated memory
* MW06626
a locale problem
========================================================================
Known Bugs and Incompatibilities
========================================================================
* multibyte routines not implemented - we may have an alpha version
ready by Pro4
* wide character support in C++ is unsupported in this release, but it
should be ready by Pro4
* MW02614
MW02687
On 68K for 8-byte doubles, using function pointers to ANSI math
functions do not work.
* MW01261
Precision of printing doubles is incorrect even when values are
exact (e.g., int).
* MW02521 (mac)
Conflict with order of includes for Types.h and mcompile.h
* MW02761 (x86)
Problem with _access if path is a directory
* MW03025 (mac)
SIOUX WASTE project file needs addition settings to build optimally
* MW07513
long double math functions do not work on PPC. The problem
is that prototypes instead of macros are in cmath. We do
not support the 128 bit long double data type on the PPC,
so the return values of these functions are not properly
coerced into IEEE 64 bit doubles. a work around is to
have a macro that maps to the appropriate double version
of the function(i.e. #define tanl tan).
* MW02614/MW02687/MW01266
on 68K for 8 byte doubles, functions pointers to
ANSI math functions do not work.
* MW02914/MW06751
math.h/fp.h conflicts on 68K when including HyperXcmd.h
(In general, math.h and fp.h conflict on 68K). This should
be fixed in the next drop of Apple's universal headers.
* MW03454/MW05701
strtod/sscanf produce results off by a factor of 10
on only 68K.
* MW07337
feature not yet added. standard api's atof() and sscanf do
not yet implement the C9X extension which requires these
to recognize the strings NAN and INF as input values.
========================================================================
Additional Notes
========================================================================
Disclaimer:
This library represents a major step forward in providing fully Standard
compliant C and C++ libraries. We strongly desire to be responsive to
users' requests and needs; however, our position is that we uphold and
implement the Standards behavior in both the C and C++ libraries. If a
behavior was provided by MSL but goes against the Standard, we reserve
the right to modify the behavior to comply fully with the Standard. If,
however, a behavior is unspecified or not specifically forbidden by the
Standard, we will continue to support it in the library. We reserve the
right to use our discretion in implementing non-standard and
non-specified C and C++ library behavior.
===================================================================
* C++ Library Update
===================================================================
General Comments
----------------
The battle with overly used inline continues. Much of the library has
been fixed in this respect, but there is still a ways to go.
Fixing the implicit conversion warnings continues. Much progress
has been made, but there is still more work to do.
<algorithm>
-----------
The implementation of many methods has been simplified without
changing the actual algorithms used. Inline depth has been reduced,
and readability increased.
Several methods used opertor!= on their template parameters. This bug
has been corrected to use operator== instead. Affected methods include:
find, search, search_n, remove_copy and unique_copy.
An algorithmic bug was fixed in find_end.
Return type of generate_n changed from OutputIterator to void in
compliance with the standard.
reverse algorithm changed to that suggested by the standard.
Added a random access iterator specialization to partition.
Added exception saftey to stable_partition.
Rewrote sort to simplify and achieve a 10% to 15% speed increase.
Rewrote stable_sort. It now is exception safe and gets the right
answer.
Rewrote the heap functions for a modest performance improvement.
<bitset>
--------
Rewrote class to only use 1 bit per bool, as opposed to 1 byte as
implemented previously.
<fstream>
---------
Minor changes in the construction of the fstream classes which removes
duplicated work, and eliminates a memory leak.
<functional>
------------
Simplified implementation of the arithmetic, comparison and logical
operators to increase readability.
Rewrote mem_fun classes and functions.
<ios>
-----
Altered ios_base in such a way that its default constructor does not
touch any memory. This is key in getting the standard streams (cin,
cout, etc.) to be functional before and after main, and at the same
time, not leak memory.
Modified the default constructor of basic_ios for the same reasons as
mentioned above for ios_base.
Added a _SaveFlags class that saves the flags of a ios_base. This is
used in <locale> to temporarily change the flags of a stream in an
exception safe manner.
<iostream>
----------
Put the static ios_base::Init object back in this header (it was
moved from here in Pro3). It was moved out to help stop a memory leak
associated with the standard streams. The stream classes have been
modified now to not leak, even with the Init object back in this
header. Having the Init object in this header is key to getting the
standard streams to be functional before and after main.
<istream>
---------
Removed #include <extmath.h>. It was not needed, and was causing a
conflict with assert.
A default constructor was added to aid in the construction of the
standard streams in a non-leaking manner.
Corrected the basic_istream constructor which takes a streambuf
pointer. This not only made the class more standard, but corrected a
problem with user-defined classes derived from istream.
basic_iostream constructor modifed so that ios_base::init() is called
only once. This stops a memory leak.
<iterator>
----------
Added a standard partial specialization to iterator_traits:
template <class T> struct iterator_traits <const T*>
Added the macro #define __MSL_FIX_ITERATORS__(myType) for when
MSIPL_PARTIAL_SPECIALIZATION is defined (partial template
specialization support). This macro is meant to define away code
which was previously needed to work around lack of partial template
specialization support. Unfortunately the old __MSL_FIX_ITERATORS__
macro did not include a trailing ';', thus forcing users to add one.
Now when MSIPL_PARTIAL_SPECIALIZATION is turned on, the trailing ';'
that users had to add will still be there, possibly in a place that
the compiler doesn't appreciate. Such ';' must be manually deleted
by the user at each use. The version of the __MSL_FIX_ITERATORS__
macro that is active when MSIPL_PARTIAL_SPECIALIZATION is not defined
has been modified to include the trailing ';'. Thus, once the user
removes the trailing ';' from each use of the __MSL_FIX_ITERATORS__
macro, MSIPL_PARTIAL_SPECIALIZATION can be turned on and off with
ease. Sorry for the inconvenience.
To summarize, in your code change
__MSL_FIX_ITERATORS__(MyClass);
to
__MSL_FIX_ITERATORS__(MyClass)
This macro will not be required for your classes with partial template
compiler support. At the time of this writing, it is not certain if
new compilers will be released simultaneously with this library.
The distance() method has been simplified.
reverse_iterator was rewritten without mutex. mutex is too expensive
to burden such a light weight object with. reverse_iterators passed
by value to multiple threads will maintain their integrity. However,
the object that they refer to will have to be properly mutex'ed by the
user. This design insures that you only pay for mutex when you need
it.
Rewrote istream_iterator for several reasons: 1. It mistakenly
referred to cin. 2. It had a mutex object. 3. It had a bool data
member that was unnecessary (this should be a very light weight
object).
Removed copy constructor and destructor from ostream_iterator. The
compiler generated versions work just fine, and the result is a class
that the compiler has an easier time inlining.
Rewrote istreambuf_iterator for modest performance gains.
<limits>
--------
Changed #include <wchar.h> to <cwchar>. Silly bug!
Removed previous implementation which was in comments.
<locale>
--------
Rewrote. The new version fixes many bugs. Most notably, the C++
library will now compile with much less ram and cpu.
There is a performance / functionality tradeoff that can be controlled
by the user via #define flags in <mcompile.h>. The tradeoff stems
from the fact that most of the code in <locale> lives under templated
virtual methods. With current compiler technology, templates with
virtual methods are completely instantiated if an instance of that
class template is constructed. This adds up to a lot of code that is
instantiated, but will often never be used.
Metrowerks is working on both library and compiler technology to
optimize away this problem. In the mean-time we offer some low-tech
options to save both code size, and library compile time:
The virtual key word can be easily turned on and off for each
individual facet class in <locale>. When all facets have virtual
methods, this is standard. Turning off the virtualness of a facet's
methods means that you will not be able to derive from a facet and
thus alter I/O behavior.
There is a group of facets that have "punct" in their name:
numpunct, moneypunct, and timepunct (timepunct is non-standard).
These facets are very small (in code), but offer tremendous
flexibility in the custimization of I/O. With these classes one can
alter the placment of commas for grouping digits (thousands
seperators), or even change what character is used. The decimal point
character can also be modified. Even the character strings that
represent true and false can be changed.
A good performance / functionality tradeoff is to make only the
"punct" facets virtual. This can easily be done by
#define _ONLY_VIRTUAL_PUNCTS
in <mcompile.h>. In fact this is the default state of the C++ libs
that we will ship.
Also in <mcompile.h> you will notice two other
flags that are commented out:
// #define _NO_VIRTUAL_FACETS
// #define _CUSTOM_VIRTUAL_FACETS
If you wish no facets to have virtual methods, then comment out
_ONLY_VIRTUAL_PUNCTS, and uncomment _NO_VIRTUAL_FACETS.
If you with to define precisely which facets have virtual methods then
use the _CUSTOM_VIRTUAL_FACETS flag, and then modify <locale> at line
71 to specify which facets you want virtual methods turned off. The
macro magic there ought to be clear for those wishing to travel down
this road.
For a completely standard lib (all facets have virtual methods) then
comment out all three flags (_ONLY_VIRTUAL_PUNCTS, _NO_VIRTUAL_FACETS
and _CUSTOM_VIRTUAL_FACETS) in <mcompile.h>.
As mentioned above, a non-standard class has been added:
template <class charT>
class timepunct
: public locale::facet
{
public:
explicit timepunct(size_t refs = 0);
const charT* weekday_name(size_t d) const;
const charT* month_name(size_t m) const;
const charT* am_pm(int hour) const;
protected:
timepunct();
virtual const charT* do_weekday_name(size_t d) const;
virtual const charT* do_month_name(size_t m) const;
virtual const charT* do_am_pm(int hour) const;
};
This class can be overridden so that the standard time_put and
time_get work with user defined character strings to represent the
names of the months (which default to "January", "February", ...),
the days of the week (which default to "Sunday", "Monday", ...), and
the am/pm designator (which defaults to "am", "pm").
To create your own timepunct class you must derive it from
std::template <class charT> class _Generic_timepunct. I reccommend
that you copy the implementation for template <> class
timepunct<char>.
<mcompile.h>
------------
In addition to the flags mentioned under locale section, the flag
MSIPL_PARTIAL_SPECIALIZATION has been added. This flag controls
whether or not the library is expecting the compiler to support
partial template specialization.
The flag _WIN32 has been added to the Windows platform.
The macro MSIPLSTD was changed from std to ::std.
<memory>
--------
get_temporary_buffer was rewritten. It used to use a preallocated
buffer when the size of the requested memory was small enough. This
has been changed to just use new because of concerns in a multi-
threaded environment.
A non-standard class has been added: template <class T> class _TempVec.
This creates an array of T by using get_temporary_buffer, and
initializes it with a user supplied value. The for reason this class is
to facilitate the use of get_temporary_buffer in an exception-safe
manner. This class is used in <algorithm>.
There is a new auto_ptr in the Nov' 97 standard (which unfortunately
is not public). The best public information I know of on this subject
can be found at http://www.dejanews.com/ (search for auto_ptr). The
main change in auto_ptr is that when the class relenquishes ownership
of its pointer, it sets itself to null. The Dec. '96 auto_ptr has
been left in <memory>, but commented out. If you require the '96
behavior, then simply comment out the '97 version, and uncomment the
'96 version.
<new>
-----
References to DebugNew have been deleted. This does not imply a lack
of support for this utility. Indeed, look forward to increased
support in this area!
<ostream>
---------
A default constructor was added to aid in the construction of the
standard streams in a non-leaking manner.
Corrected the basic_istream constructor which takes a streambuf
pointer. This not only made the class more standard, but corrected a
problem with user-defined classes derived from istream.
Formatting of char output has been corrected (now obeys width and
justification).
Output of char* has been rewritten to take advantage of the new
locale. There is however, no change in functionality.
The exception behavior of the formatted output operators has been
modified. Unfortunately a bug still lurks here. If an exception is
thrown, then the method should set badbit and rethrow the exception.
Instead, badbit is left unset. This is a known bug and will be fixed
in the next release.
<string>
--------
Fixed a bug in char_traits<char>::find related to char's greater than
127.
Removed default argument from
iterator string::insert(iterator, char)
per the standard.
Changed string output to respect stream width and justification.
This is non-standard behavior, but I believe that the standard is in
error (a type-o of a single word: smaller was written when larger meant).
If the standard is strictly interpreted, then os << string;
should produce no output at all! (That is, for the common case of
os.width() == 0).
<vector>
--------
Reduced inline depth of serveral iterator operations.
===================================================================
* MSL C Source File Updates
===================================================================
* ansi_parms.h
C compiler flags have moved from <ansi_parms.h> to
<ansi_prefix.xxx.h>, where xxx is mac or Win32.
* file_io.mac.c
path2fss.c
Changes to allow the renaming of directories. MW00456
* scanf.c
Modification to allow characters >= 128, e.g. fl or ä to be matched
from format string correctly. MW06720
* SIOUX.c
Fix to insert linefeed to make the sequence \b\n work correctly.
Fix the enter key work as return on input from keyboards where
the virtual key code is 0x34 as well for keyboards with an enter
key virtual key code of 0x4c. MW06775
* SIOUXWindows.c
Removed two ReleaseResource statements that released a shared
resource, causing possible crashes in other applications. MW00225
* fcntl.mac.h
fcntl.mac.c
fcntl.win32.h
Changes to the value of O_RDWR so that it has a non-zero value.
MW00042.
* unistd.mac.c
Fix to lseek for case where it is used to seek beyond EOF to
extend the file. MW00445 (I don't believe lseek implemented
on Windows yet.)
* file_io.mac.c
Change to allow an alias file name to be resolved. MW00294
* mem.c
Change to allow memchr to work on the PPC for characters of
value > 127. MW02625
* console_io.mac.c
SIOUX.h
SIOUX.c
Changes to implement clrscr, for which there was a declaration
in console.h but no code.
* ansi_files.c
Change to allow error-free linking in case where _No_Console is
defined. MW07076, MW06847
* file_io.c
The C Standard does not specify any action for fflush() on a
stream opened for read only. As it stood, our implementation
caused the buffer to be reloaded. This change turns fflush()
into a no-op if the file is opened for read. MW02733
* time.c
Corrected strftime to return the correct number of characters
written and make proper check to avoid target string overrun.
MW06496
* SIOUXGlobals.c
SIOUXGlobals.h
Changes to make SIOUX_WASTE work properly for files greater
than 32k. MW07031
* utime.win32.h
Change to reintroduce #include <winsock.h> eliminated earlier.
This include is required and has been requested again from a
user. However, this leads to redeclaration warning messages
during the building of the library due to the way that the
Microsoft headers (which we can't change) have been written.
* fcntl.win32.h
fnctl.win32.c
Changes to remove #defines of open, creat, fcntl to _open,
_creat, and _fcntl.
* unistd.win32.h
unistd.win32.c
Changes to revert _lseek, _read, _write, _access, _close,
_unlink, _rmdir, _chdir, _getcwd to lseek, read, write, access,
close etc. while accommodating legacy code.
===================================================================
* WinSIOUX in MSL 2.4 (Pro 3), Updates for Pro3 Patch
===================================================================
The Mac SIOUX-like project is now available for Windows. This means
that a new console window for WIN32 applications is available that
permitssaving stdout to a file, printing it from a menu option, and
includes ascroll bar. A new stationary on the windows platforms is
included, named WinSIOUX. You will not get the standard DOS/NT console
if you use this stationary. The remaining functions from SIOUX will be
included in future releases (for example, cut and paste, selecting font,
and opening/closing files from the menu).
The following has been added to the Pro3 Patch:
* The addition of an Edit Menu with active items of Copy, Cut
Paste and Select All.
* Keyboard shortcuts for menu items. Note that, during keyboard
input to stdin or cin, the keyboard shortcuts are not available
and the corresponding menu items must be used.
* Caret control both through the keyboard (arrow keys) and the
mouse.
* The ability to select parts of the file with the mouse.
* The ability to print just specific pages selected during the
print dialog.
* During keyboard input to stdin or cin, ctrl+D and ctrl+Z both
serve as end-of-file markers. There is no way to clear this
marker once it has been set.
* While the program is running, Ctrl-C acts as a keyboard interrupt
that can be handled by a user specified handler. If no handler is
provided by the user, the default handler will terminate the program.
When there parts of the file have been selected as under 4 above,
Ctrl-C still acts as a keyboard shortcut for Copy.
* Added proper handling of argv and argc variable length argument
lists.
* The size of the console window can now be adjusted with the mouse in
the bottom right corner and the display of long lines of text will be
adjusted accordingly.
===================================================================
Miscellaneous Notes
===================================================================
* Precompiled header stationary sets precompiled headers to 4i-8d.
When using precompiled headers built from the stationary, please
ensure that the libraries you include in your project are also 4i-8d.
If changing the precompiled headers preferences panels, please ensure
that you build the associated libraries you plan to use with the same
options. A "#pragma check_header_flags" has been added to MSL.pch++
to help check for these types of errors.
* Improved clock for Mac platforms
To increase the tick count for the Mac platforms in order to use the
facilities the Operating System provides, please change the following
file:
Metrowerks Standard Library/MSL C/MSL Mac/Public Includes/
timesize.mac.h
This file introduces a define (__TIMESIZE_DOUBLE) which enables the
improved clock code in time.h and time.mac.c. Please note that the
clock_t typedef will change from an unsigned long to a type double.
This also means that the clock function will change types. Be sure
you confirm in your code base that your return values are typed
accordingly for clock and clock_t.
* Multi-target project files. You will see new project files with the
string MTrg included in the project name. This means that the project
file can emit all targets from that single file, depending on your
selection when you open the project file and choose a target. However,
it takes more time to open the multi-target project files. This was
done for the windows platforms because scripting is not available in
the IDE on windows.
* Console applications for windows projects now stop before exiting so
that output can be viewed. This feature can be turned off by setting
the preprocessor macro STOP_PROGRAM_BEFORE_EXIT in the windows
prefix file, ansi_prefix.win32.h. Be sure to rebuild MSL C after
making this change. Please note that if you redirect output to a
serial device (such as a printer), you must still press enter to
exit the program.
* There is a vbscript script in the "Metrowerks Standard Library"
directory that rebuilds the precompiled header files, the win32
runtime, and all MSL libraries. Read the information at the top of
the script file "msl_build.vbs" if you have problems running the
script. The file "msl_list" in the same directory can be configured
to build exactly those libraries you wish to build. If errors occur
while building, they are logged in the file "error.log" in the
"Metrowerks Standard Library" directory.
========================================================================
Contacting Metrowerks
========================================================================
For bug reports, technical questions, and suggestions, please use the
forms in the Release Notes folder on the CD, and send them to
support@metrowerks.com
See the CodeWarrior on the Nets document in the Release Notes folder for
more contact information, including a list of Internet newsgroups,
online services, and patch and update sites.
========================================================================
Metrowerks Corporation